A Microfiche Appendix consisting of 2 sheets (153 total frames) of microfiche is included in the parent U.S. application Ser. No. 08/997,137, U.S. Pat. No. 6,256,679, the contents of which are hereby incorporated herein by reference. The Microfiche Appendix included in the parent application contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the Microfiche Appendix, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates to computer system software architectures and more particularly to a layered, object-oriented software architecture for use in embedded computer systems.
Programming of computer systems is commonly achieved through computer software that is stored and executed by the computer in a predefined manner to achieve the intended operation or functionality of the computer system. Many forms of programming languages exist that can be used to describe specific operations or functions, which are then communicated to the computer system in a known manner to realize the intended operation or functionality. Even in rudimentary computer systems, certain rules exist that create an environment for such programming. Within the particular environment, a skilled programmer can develop computer software programs for execution on the computer system. Computer systems that require some form of programmed control should include a framework of the environment for such programming.
One form of computer programming technique or type of computer language that has become popular recently is called object-oriented programming. Through the creation of a hierarchy of software xe2x80x9cobjectsxe2x80x9d a skilled programmer can describe the basic and more complicated functions intended for a target computer system. Objects are typically instances of physical or logical entities in the computer system. Real world objects are typically used to model the system domain, and non-real world objects are used as modeling tools. Objects are also commonly grouped into classes of related objects, and each object is therefore an instance of an object class. Some presently known object-oriented programming languages include Ada, C++, Smalltalk, and Java to name a few. Programs written in these or other object-oriented languages operate within a predefined framework or environment to control various computer systems. A library of objects thus represents a collection of self-contained software routines for the processes and operations of the intended computer system. Basic objects that exist for rudimentary functions can be combined through software programs to achieve higher levels of functionality.
Embedded computer systems have their own programming needs based of the hardware components of each specific system. Typical airframe or aircraft environments include a host of electronic components and systems that are used in the operation of the aircraft. Examples of certain electrical subsystems include flight control, engine monitoring, cabin environmental control and fuel system gauging, to name a few. One important function in the operation of any aircraft is a determination of the remaining fuel quantity available for the engines. Many techniques exist for the gauging or measurement of fuel quantity in an airplane. Several forms of sensors are known for measuring fuel levels, as well as critical flight information, that can be used in the determination of fuel quantity remaining in a fuel tank. More commonly, invasive sensors are deployed within a fuel tank that are used to measure fuel quantity through height and volume measurements. Invasive sensors, however, may introduce unwanted risks to an aircraft including, but not limited to, introducing electrical energy within the fuel tank. Non-invasive sensors in the fuel tank may be used to aid in a determination of fuel quantity. Such non-invasive sensors avoid some of the above risks and include, for example, accelerometers and transducers, to name a few. With the use of external, non-invasive sensors, maintenance of the fuel gauging system is also easier.
With the existence of many sophisticated electrical systems and subsystems in an aircraft, attempts have been made to control the operation of such electronics through computers. Both independent and centralized computer systems have been developed to control the operation of certain large and small electronic systems within an aircraft. Computer systems are also known for the determination of fuel quantity remaining in an aircraft fuel tank. Existing computer systems, however, are rudimentary and may not allow for the use of sophisticated software techniques such as those described above. What is lacking in the art is a sophisticated computer system environment for use in control of aircraft utilities in general. The prior art also lacks the advantage of an object-oriented software architecture that can easily be used in gauging the remaining fuel in an aircraft fuel tank.
In view of the above, the invention provides a blackboard-centric layered software architecture for an embedded airborne fuel gauging subsystem. According to one aspect of the invention, a computer software architecture is provided for isolation of critical system responsibilities in an aircraft fuel gauging system. The architecture includes a determination layer of software objects having a sensor fusion authority, a data fusion authority and a determination controller. The determination layer of software objects is coupled to a blackboard layer of software objects for communicating information between object layers. A virtual airframe layer of software objects is also provided having a resource data manager, and a bus item and common sensor. The virtual airframe layer of software objects is coupled to the blackboard layer of software objects, as well as a virtual processor layer of software objects. The virtual processor layer of software objects has at least one processor utility application programming interface, and a bus message driver and analog to digital driver. The virtual processor layer of software objects is operative to receive information over a standard interface. A run-time executive is then coupled to the determination, virtual airframe and virtual processor layers of software objects, and is operative to schedule execution threads.
In another aspect of the invention, a method is provided for scheduling tasks in a computer software environment. The method includes providing a run-time executive service for utilization by client processes. The run-time executive service is operative to schedule processing tasks within the computer software environment. Scheduling requests received from the client processes are submitted to the run-time executive. A schedule is built that incorporates the scheduling requests received from all client processes. A work list is then built from the schedule at the start of each major process cycle, where the work list comprises a list of tasks to be performed during a current process cycle. System calls are then made to perform currently scheduled tasks.
According to another aspect of the invention, a run-time executive for scheduling tasks in computer software environment is provided. The run-time executive includes means for providing a run-time executive service for utilization by client processes. The run-time executive service is operative to schedule processing tasks within the computer software environment. Means are provided for submitting scheduling requests received from the client processes to the run-time executive. Means are also provided for building a schedule that incorporates the scheduling requests received from all client processes. Means for building a work list from the schedule at the start of each major process cycle are also provided, where the work list comprises a list of tasks to be performed during a current process cycle. Means for making system calls to perform currently scheduled tasks are also included.
Yet another aspect of the invention provides a virtual airframe layer of software objects. The virtual airframe layer of software objects includes a resource data manager operative to initialize and reconfigure adaptable resource data. A bus item coupled to a virtual processor is included, where the bus item is operative to communicate common bus data to the virtual processor. A common sensor coupled to at least one physical airframe sensor is also provided that is operative to communicate sensor data and features to the virtual processor.
In view of the above, the present invention provides a sophisticated computer system environment for use in aircraft control in general, and more particularly, an object-oriented software architecture that can easily be used in a variety of airplanes and aircraft. The use of an object-oriented software architecture separates hardware concerns from software concerns, and sensor processing from sensor fusion. This architecture also improves fault tolerance, and provides strong support for reuse of the software objects. In addition, portability of the software is enhanced by providing a common environment/architecture across different processors and platforms, as well as across different airframes. This further promotes reuse with other utility systems such as, for example, a health utilities monitoring system (xe2x80x9cHUMSxe2x80x9d). The software architecture also makes changes to the software programming easy to achieve by providing for iterative development and maintenance, as well as simplified tuning of the software for improved system performance.
The implementation of different layers of software objects also isolates critical responsibilities of the computer/airframe system. The lower layers of the software architecture abstract the computer system from the airframe environment. Accordingly, the higher layers of software objects need only be concerned with gauging fuel through a determination of fuel mass. This software architecture is also more understandable to the user/programmer because it graphically represents the system as it is viewed by the typical user/programmer. Moreover, the use of a determination layer of software objects improves system or overall fault tolerance from the loss of sensor data. The particular software architecture described above also allows processes to be executed in either a distributed or centralized manner.
These and other features and advantages of the invention will become apparent upon a review of the following detailed description of the presently preferred embodiments of the invention, taken in conjunction with the appended drawings.